﻿/*
 * 邮件、短信设置
 * author : Frank Luo
 */

//5-12行为插件栏，用于支持itemselector控件。
Ext.Loader.setConfig({
	enabled : true
});
// Ext.Loader.setPath('Ext.ux', '/TEX/resources/extjs/ux');
Ext.Loader.setPath('Ext.ux', ctx + '/resources/extjs/ux');
Ext.require([ 'Ext.ux.form.MultiSelect', 'Ext.ux.form.ItemSelector' ]);

Ext.define('HIT.view.SetMailTemplatePanel', {// 邮件短信设置
	extend : 'Ext.form.Panel',
	alias : 'widget.mail',
	cls : 'custom-grid',
	frame : false,
	width : 1200,
	columnLines : false,
	//store : 'MailTemplate',

	initComponent : function() {
		var me = this;
		var myId = null;// 用于记录每个控件的ID
		
		function changeBtn(type){
			var itcIds = 1;
		    var cbgItem = Ext.getCmp('noticeType').items;
		    for(var i=0; i < cbgItem.length; i++){
		        if(cbgItem.getAt(i).checked){
		        	itcIds = cbgItem.getAt(i).inputValue;
		        }
		    }
		    if (itcIds == 1) {
		    	if(type == 'to'){
		    		Ext.getCmp('repaceCon').setDisabled(true);
					Ext.getCmp('VemailAdd').setDisabled(false);
		    	} else if (type == 'cc') {
		    		Ext.getCmp('repaceCon').setDisabled(true);
					Ext.getCmp('VemailAdd').setDisabled(false);
		    	} else if (type == 'bcc') {
		    		Ext.getCmp('repaceCon').setDisabled(true);
					Ext.getCmp('VemailAdd').setDisabled(false);
		    	} else if (type == 'sub') {
		    		Ext.getCmp('repaceCon').setDisabled(true);
					Ext.getCmp('Vcompany').setDisabled(false);
					Ext.getCmp('Vexpress').setDisabled(false);
					Ext.getCmp('Vdate').setDisabled(false);
		    	} else {
		    		Ext.getCmp('repaceCon').setDisabled(true);
					Ext.getCmp('Vcompany').setDisabled(false);
					Ext.getCmp('Vexpress').setDisabled(false);
					Ext.getCmp('Vdate').setDisabled(false);
					Ext.getCmp('VreceiverName').setDisabled(false);
					Ext.getCmp('VexpCom').setDisabled(false);
					Ext.getCmp('Vinvoice').setDisabled(false);
		    	}
		    } else {
		    	if(type == 'to'){
		    		Ext.getCmp('repaceCon').setDisabled(true);
					Ext.getCmp('VemailAdd').setDisabled(false);
		    	} else if (type == 'cc') {
		    		Ext.getCmp('repaceCon').setDisabled(true);
					Ext.getCmp('VemailAdd').setDisabled(false);
		    	} else if (type == 'bcc') {
		    		Ext.getCmp('repaceCon').setDisabled(true);
					Ext.getCmp('VemailAdd').setDisabled(false);
		    	} else if (type == 'sub') {
		    		Ext.getCmp('repaceCon').setDisabled(true);
					Ext.getCmp('Vcompany').setDisabled(false);
					Ext.getCmp('VincNo').setDisabled(false);
					Ext.getCmp('Vdate').setDisabled(false);
		    	} else {
		    		Ext.getCmp('repaceCon').setDisabled(true);
					Ext.getCmp('VreceiverName').setDisabled(false);
					Ext.getCmp('Vcompany').setDisabled(false);
					Ext.getCmp('VincNo').setDisabled(false);
					Ext.getCmp('VinvSta').setDisabled(false);
					Ext.getCmp('VinvEnd').setDisabled(false);
					Ext.getCmp('VreturnDate').setDisabled(false);
					Ext.getCmp('Vstatus').setDisabled(false);
					Ext.getCmp('VoffsetNo').setDisabled(false);
					Ext.getCmp('VoffsetDate').setDisabled(false);
					Ext.getCmp('Vinvoice').setDisabled(false);
					Ext.getCmp('Vdate').setDisabled(false);
		    	}
		    }
		}
		
		// 查询模板
		function regetTempalte() {

			// 获取页面选中的通知设置
			var noticeTypeGroup = Ext.getCmp('noticeType');
			var templateType = '';
			noticeTypeGroup.items.each(function(item) {
				if (item.checked) {
					templateType = item.inputValue;
				}
			});

			// 重置所有控件
			// 收件人
			Ext.getCmp('receiver').setValue('');

			// CC
			Ext.getCmp('cc').setValue('');

			// BCC
			Ext.getCmp('bcc').setValue('');

			// 主题
			Ext.getCmp('subject').setValue('');

			// 邮件正文
			Ext.getCmp('emailBody').setValue('');

			// 短信正文
			Ext.getCmp('messageBody').setValue('');

			// 启用邮件通知
			Ext.getCmp('mailNoticeFlg').setValue(false);

			// 启用短信通知
			Ext.getCmp('messageNoticeFlg').setValue(false);

			// 查询模板 templateType:通知设置类型
			// 1为发票通知设置， 2为申请人通知设， 3为审核人通知设置
			Ext.Ajax.request({
    			// 从controller返回的response中读取数据
    			url : 'getTemplate',
    			method : 'POST',
    			scope: this,
				params : {templateType : templateType},
    			async : false,
    			success : function(response) {
    				s = response.responseText;
    				json = Ext.JSON.decode(s);
			/*Share.AjaxRequest({
				url : ctx + '/getTemplate',
				params : {
					templateType : templateType
				},
				showMsg : false,
				callback : function(json) {*/

					// 回调方法
					// 设置页面控件的属性
					// 通知设置类型
    				if(json!=null){
						var NoticeTypeGroup = Ext.getCmp('noticeType');
						var noticeType = json.templateType;
						NoticeTypeGroup.items.each(function(item) {
							if (item.inputValue == noticeType) {
								item.setValue(true);
							}
						});
	
						// 收件人
						Ext.getCmp('receiver').setValue(json.receiver);
	
						// CC
						Ext.getCmp('cc').setValue(json.carbonCopy);
	
						// BCC
						Ext.getCmp('bcc').setValue(json.blindCarbonCopy);
	
						// 主题
						Ext.getCmp('subject').setValue(json.theme);
	
						// 邮件正文
						Ext.getCmp('emailBody').setValue(json.mailContent);
	
						// 短信正文
						Ext.getCmp('messageBody').setValue(json.messageContent);
	
						// 启用邮件通知
						Ext.getCmp('mailNoticeFlg').setValue(json.mailNoticeFlg);
	
						// 启用短信通知
						Ext.getCmp('messageNoticeFlg').setValue(
								json.messageNoticeFlg);
    				}
				}
			});

		}
		/*
		 * 封装了在光标处插入值的方法
		 */
		function insertAtCursor(myField, myValue) {
			// 获取ext的ID
			var id = myField.getId();
			// 获取js控件
			var el = document.getElementById(id + '-inputEl');
			// IE support
			if (document.selection) {
				myField.focus();
				sel = document.selection.createRange();
				sel.text = myValue;
				sel.select();
			} else if (typeof (el.selectionStart) == "number") {
				// Chrome support
				var start = el.selectionStart;
				var end = el.selectionEnd;
				el.value = el.value.substring(0, start) + myValue
						+ el.value.substring(end, el.value.length);
				myField.focus();
			} else {
				myField.value += myValue;
				myField.focus();
			}
		}
		Ext.applyIf(me, {
			items : [ {
				xtype : 'fieldset',
				id : 'mailfieldset',
				x : 10,
				y : 10,
				height : 550,
				width : 870,
				layout : {
					type : 'absolute'
				},
				items : [ {
					xtype : 'radiogroup',
					id : 'noticeType',
					labelWidth : 40,
					x : 20,
					y : 0,
					width : 400,
					listeners : {
						change : function() {
							regetTempalte();
						}
					},
					items : [ {
						xtype : 'radio',
						name : 'combine',
						boxLabel : Share.T('寄送通知设置'),
						inputValue : '1',
						checked : true,
						width : 170
					}, {
						xtype : 'radio',
						name : 'combine',
						boxLabel : Share.T('申请人通知设置'),
						inputValue : '2',
						width : 190
					}, {
						xtype : 'radio',
						name : 'combine',
						boxLabel : Share.T('审核人通知设置'),
						inputValue : '3',
						width : 190
					} ]
				}, {// 第一基本框开始
					xtype : 'fieldset',
					x : 10,
					y : 30,
					height : 540,
					width : 505,

					layout : {
						type : 'absolute'
					},
					title : Share.T('邮件短信设置'),
					items : [ {
						xtype : 'label',
						x : 105,
						y : 10,
						text : Share.T('多个邮箱地址时请用分号分隔，请输入合法的邮箱地址。'),
						style : 'font-width:9px;color:#909090;'
					}, {
						xtype : 'textfield',
						id : "receiver",
						x : 0,
						y : 30,
						anchor : '100%',
						fieldLabel : Share.T('To'),
						emptyText : Share.T('请输入收件人…'),
						maxLength : 100,
						msgTarget : 'side',
						allowBlank : false,
						blankText : Share.T('收件人不能为空'),
						//regex: /^\s*\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*(\;\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)*(\;)*\s*$/,
		                //regexText: Share.T('该邮件格式无效'),//"The email format is invalid",
						listeners : {
							render : function(p) {
								// 给ID赋值
								p.getEl().on('click', function() {
									// 获取焦点，如不加此方法，会出现bug
									this.focus(true, true);
									myId = 'receiver';
									changeBtn('to');
								});
							}
						}
					}, {
						xtype : 'textfield',
						id : 'cc',
						x : 0,
						y : 60,
						anchor : '100%',
						maxLength : 200,
						msgTarget : 'side',
						height : 23,
						//regex: /^\s*\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*(\;\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)*(\;)*\s*$/,
		                //regexText: Share.T('该邮件格式无效'),//"The email format is invalid",
						fieldLabel : Share.T('CC'),
						listeners : {
							render : function(p) {
								// 给ID赋值
								p.getEl().on('click', function() {
									this.focus(true, true);
									myId = 'cc';
									changeBtn('cc');
								});
							}
						}
					}, {
						xtype : 'textfield',
						id : 'bcc',
						x : 0,
						y : 90,
						height : 23,
						maxLength : 200,
						msgTarget : 'side',
						anchor : '100%',
						//regex: /^\s*\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*(\;\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)*(\;)*\s*$/,
		                //regexText: Share.T('该邮件格式无效'),//"The email format is invalid",
						fieldLabel : Share.T('BCC'),
						listeners : {
							render : function(p) {
								// 给ID赋值
								p.getEl().on('click', function() {
									this.focus(true, true);
									myId = 'bcc';
									changeBtn('bcc');
								});
							}
						}
					}, {
						xtype : 'textfield',
						id : 'subject',
						x : 0,
						y : 120,
						anchor : '100%',
						height : 23,
						fieldLabel : Share.T('主题'),
						emptyText : Share.T('请输入主题…'),
						msgTarget : 'side',
						maxLength : 100,
						allowBlank : false,
						blankText : Share.T('主题不能为空'),
						listeners : {
							render : function(p) {
								// 给ID赋值
								p.getEl().on('click', function() {
									this.focus(true, true);
									myId = 'subject';
									changeBtn('sub');
								});
							}
						}
					}, {
						xtype : 'textareafield',
						id : 'emailBody',
						height : 200,
						msgTarget : 'side',
						maxLength : 500,
						x : 0,
						y : 150,
						anchor : '100%',
						fieldLabel : Share.T('邮件正文'),
						emptyText : Share.T('请输入邮件正文…'),
						listeners : {
							render : function(p) {
								// 给ID赋值
								p.getEl().on('click', function() {
									this.focus(true, true);
									myId = 'emailBody';
									changeBtn('mail');
								});
							}
						}
					}, {
						xtype : 'textareafield',
						id : 'messageBody',
						height : 100,
						x : 0,
						y : 360,
						anchor : '100%',
						msgTarget : 'side',
						maxLength : 500,
						fieldLabel : Share.T('短信正文'),
						emptyText : Share.T('请输入短信正文…'),
						listeners : {
							render : function(p) {
								// 给ID赋值
								p.getEl().on('click', function() {
									this.focus(true, true);
									myId = 'messageBody';
									changeBtn('msg');
								});
							}
						}
					} ]
				}, {
					// 这个fieldset是往模板填入
					// 收件人，收件地址等要素的
					xtype : 'fieldset',
					x : 580,
					y : 30,
					id : 'repaceCon',
					height : 310,
					width : 230,
					layout : {
						type : 'absolute'
					},
					title : Share.T('替换内容'),
					items : [ {
						xtype : 'button',
						text : Share.T('收件人邮箱'),
						x : 10,
						y : 0,
						width : 80,
						id : 'VemailAdd',
						listeners : {
							'click' : function() {
								var a = Ext.getCmp(myId);
								if (a) {
									var value = a.getValue();
									if (value != '') {
										insertAtCursor(a, Share.T(';[收件人邮箱]'));
									} else {
										insertAtCursor(a, Share.T('[收件人邮箱]'));
									}
								}
							}
						}
					}, {
						xtype : 'button',
						text : Share.T('收件人名称'),
						x : 10,
						y : 40,
						width : 80,
						id : 'VreceiverName',
						listeners : {
							'click' : function() {
								var a = Ext.getCmp(myId);
								if (a) {
									insertAtCursor(a, Share.T('[收件人名称]'));
								}
							}
						}
					}, {
						xtype : 'button',
						text : Share.T('公司名称'),
						x : 10,
						y : 80,
						width : 80,
						id : 'Vcompany',
						listeners : {
							'click' : function() {
								var a = Ext.getCmp(myId);
								if (a) {
									insertAtCursor(a, Share.T('[公司名称]'));
								}
							}
						}
					}, {
						xtype : 'button',
						text : Share.T('快递单号'),
						x : 10,
						y : 120,
						width : 80,
						id : 'Vexpress',
						listeners : {
							'click' : function() {
								var a = Ext.getCmp(myId);
								if (a) {
									insertAtCursor(a, Share.T('[快递单号]'));
								}
							}
						}
					}, {
						xtype : 'button',
						text : Share.T('日期'),
						x : 10,
						y : 160,
						width : 80,
						id : 'Vdate',
						listeners : {
							'click' : function() {
								var a = Ext.getCmp(myId);
								if (a) {
									insertAtCursor(a, Share.T('[日期]'));
								}
							}
						}
					}, {
						xtype : 'button',
						text : Share.T('快递公司'),
						x : 10,
						y : 200,
						width : 80,
						id : 'VexpCom',
						listeners : {
							'click' : function() {
								var a = Ext.getCmp(myId);
								if (a) {
									insertAtCursor(a, Share.T('[快递公司]'));
								}
							}
						}
					}, {
						xtype : 'button',
						text : Share.T('单据号'),
						x : 10,
						y : 240,
						width : 80,
						id : 'Vinvoice',
						listeners : {
							'click' : function() {
								var a = Ext.getCmp(myId);
								if (a) {
									insertAtCursor(a, Share.T('[单据号]'));
								}
							}
						}
					}, {
						xtype : 'button',
						text : Share.T('原发票代码'),
						x : 120,
						y : 0,
						width : 80,
						id : 'VincNo',
						listeners : {
							'click' : function() {
								var a = Ext.getCmp(myId);
								if (a) {
									insertAtCursor(a, Share.T('[原发票代码]'));
								}
							}
						}
					}, {
						xtype : 'button',
						text : Share.T('原发票开始号'),
						x : 120,
						y : 40,
						width : 80,
						id : 'VinvSta',
						listeners : {
							'click' : function() {
								var a = Ext.getCmp(myId);
								if (a) {
									insertAtCursor(a, Share.T('[原发票开始号]'));
								}
							}
						}
					}, {
						xtype : 'button',
						text : Share.T('原发票结束号'),
						x : 120,
						y : 80,
						width : 80,
						id : 'VinvEnd',
						listeners : {
							'click' : function() {
								var a = Ext.getCmp(myId);
								if (a) {
									insertAtCursor(a, Share.T('[原发票结束号]'));
								}
							}
						}
					}, {
						xtype : 'button',
						text : Share.T('退回日期'),
						x : 120,
						y : 120,
						width : 80,
						id : 'VreturnDate',
						listeners : {
							'click' : function() {
								var a = Ext.getCmp(myId);
								if (a) {
									insertAtCursor(a, Share.T('[退回日期]'));
								}
							}
						}
					}, {
						xtype : 'button',
						text : Share.T('标记状态'),
						x : 120,
						y : 160,
						width : 80,
						id : 'Vstatus',
						listeners : {
							'click' : function() {
								var a = Ext.getCmp(myId);
								if (a) {
									insertAtCursor(a, Share.T('[标记状态]'));
								}
							}
						}
					}, {
						xtype : 'button',
						text : Share.T('红冲号码'),
						x : 120,
						y : 200,
						width : 80,
						id : 'VoffsetNo',
						listeners : {
							'click' : function() {
								var a = Ext.getCmp(myId);
								if (a) {
									insertAtCursor(a, Share.T('[红冲号码]'));
								}
							}
						}
					}, {
						xtype : 'button',
						text : Share.T('红冲日期'),
						x : 120,
						y : 240,
						width : 80,
						id : 'VoffsetDate',
						listeners : {
							'click' : function() {
								var a = Ext.getCmp(myId);
								if (a) {
									insertAtCursor(a, Share.T('[红冲日期]'));
								}
							}
						}
					} ]
				}, {
					xtype : 'panel',
					x : 580,
					y : 360,
					width : 100,
					border : false,
					items : [ {
						xtype : 'checkboxgroup',
						columns : 1,
						items : [ {
							boxLabel : Share.T('启用邮件通知'),
							id : 'mailNoticeFlg'
						}, {
							boxLabel : Share.T('启用短信通知'),
							id : 'messageNoticeFlg'
						} ]
					} ]

				} ]
			} ],
			listeners : {
				afterlayout : {
					fn : me.LoadTemplateData,
					scope : me
				}
			}

		});
		me.callParent(arguments);
	},
	LoadTemplateData : function(abstractcontainer, layout, options) {

		// 查询模板 templateType:通知设置类型
		Ext.Ajax.request({
			// 从controller返回的response中读取数据
			url : 'getTemplate',
			method : 'POST',
			scope: this,
			params : {templateType : 1},
			async : false,
			success : function(response) {
				s = response.responseText;
				json = Ext.JSON.decode(s);
		/*Share.AjaxRequest({
			url : ctx + '/getTemplate',
			params : {
				templateType : 1
			},
			showMsg : false,
			callback : function(json) {*/

				// 回调方法
				// 设置页面控件的属性
				// 通知设置类型
				if(json!=null){
				var NoticeTypeGroup = Ext.getCmp('noticeType');
				var noticeType = json.templateType;
				NoticeTypeGroup.items.each(function(item) {
					if (item.inputValue == noticeType) {
						item.setValue(true);
					}
				});

				// 收件人
				Ext.getCmp('receiver').setValue(json.receiver);

				// CC
				Ext.getCmp('cc').setValue(json.carbonCopy);

				// BCC
				Ext.getCmp('bcc').setValue(json.blindCarbonCopy);

				// 主题
				Ext.getCmp('subject').setValue(json.theme);

				// 邮件正文
				Ext.getCmp('emailBody').setValue(json.mailContent);

				// 短信正文
				Ext.getCmp('messageBody').setValue(json.messageContent);

				// 启用邮件通知
				Ext.getCmp('mailNoticeFlg').setValue(json.mailNoticeFlg);

				// 启用短信通知
				Ext.getCmp('messageNoticeFlg').setValue(json.messageNoticeFlg);
			  }
			}
		});
	}
});